package com.steven.treatment_nurse.activity;

import android.graphics.Color;

import com.github.mikephil.charting.animation.Easing;
import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.components.AxisBase;
import com.github.mikephil.charting.components.Description;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.components.YAxis;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;
import com.github.mikephil.charting.formatter.IAxisValueFormatter;
import com.steven.treatment_nurse.R;
import com.steven.treatment_nurse.base.BaseActivity;

import java.util.ArrayList;
import java.util.List;

import butterknife.BindView;

import static com.github.mikephil.charting.components.YAxis.YAxisLabelPosition.OUTSIDE_CHART;


public class HSDetailActivity extends BaseActivity {
   @BindView(R.id.lineChart)
   LineChart lineChart;
    @Override
    public int intiLayout() {
        return R.layout.activity_hs_detail;
    }

    @Override
    public void initView() {
        //遍历显示图表
        /**
         * X轴的标注
         */
        String[] dataX1 = {"2020-06-22 16:41:41", "2020-06-22 16:41:41", "2020-06-22 16:41:41", "2020-06-22 16:41:41", "2020-06-22 16:41:41", "2020-06-22 16:41:41" ,"2020-06-22 16:41:41", "2020-06-22 16:41:41","2020-06-22 16:41:41", "2020-06-22 16:41:41" };
        /**
         * Y轴的标注
         */
        String[] dataY1 = {"89", "60", "72", "78",  "65", "89", "60", "72", "78",  "65"};
        addChartView(dataX1, dataY1, lineChart);
    }


    /**
     * 初始化x轴、y轴显示配置
     */
    private void addChartView(final String[] xData, final String[] yData, LineChart mLineChart) {
        XAxis xAxis = mLineChart.getXAxis();
        //x轴坐标绘制在什么方位
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        //缩放的时候有用，比如放大的时候，我不想把横轴的月份再细分
        xAxis.setGranularity(1f);
        xAxis.setValueFormatter(new IAxisValueFormatter() {
            @Override
            public String getFormattedValue(float value, AxisBase axis) {
                return xData[(int) value % xData.length];
            }
        });
        //设置坐标轴那条线的宽度
        xAxis.setAxisLineWidth(0f);
        //是否显示坐标轴那条轴
        xAxis.setDrawAxisLine(true);
        //是不是显示轴上的刻度
        xAxis.setDrawLabels(true);
        //强制有多少个刻度
        xAxis.setLabelCount(xData.length);
        xAxis.setTextColor(Color.parseColor("#333333"));
        xAxis.setGridColor(Color.parseColor("#999999"));
        xAxis.enableGridDashedLine(10f, 10f, 0f);
        YAxis leftYAxis = mLineChart.getAxisLeft();
        YAxis rightYAxis = mLineChart.getAxisRight();


        leftYAxis.setDrawAxisLine(true);
        rightYAxis.setDrawAxisLine(true);
        leftYAxis.enableGridDashedLine(10f, 10f, 0f);
        rightYAxis.enableGridDashedLine(10f, 10f, 0f);
        rightYAxis.setGridColor(Color.parseColor("#999999"));
        leftYAxis.setGridColor(Color.parseColor("#999999"));

        //设置从Y轴值
        leftYAxis.setAxisMinimum(0);
        leftYAxis.setDrawLimitLinesBehindData(true);
        //Y轴数据
        leftYAxis.setValueFormatter(new IAxisValueFormatter() {
            @Override
            public String getFormattedValue(float value, AxisBase axis) {
                int IValue = (int) value;
                return String.valueOf(IValue);
            }
        });
        leftYAxis.setAxisMaxValue(150);
        leftYAxis.setMinWidth(0);
        //不显示网格线
        //坐标轴绘制在图表的内侧
        leftYAxis.setPosition(OUTSIDE_CHART);
        //设置Y轴坐标之间的最小间隔
        leftYAxis.setGranularity(30);
        leftYAxis.setTextColor(Color.parseColor("#000000"));
        //这个玩意好像有坐标轴enable的时候是不可用的
        leftYAxis.setSpaceBottom(10f);
        leftYAxis.setLabelCount(10);
        // 每个DataSet是对应一条线上的所有点(相对于折线图来说),多条线就创建多个 LineData
        mLineChart.setData(new LineData());
        mLineChart.animateX(2000, Easing.EasingOption.Linear);
        addLineDataSet(yData, mLineChart);
    }

    /**
     * 初始化"折线图"配置 ，填充y轴数据进行渲染
     */
    private void addLineDataSet(String[] data, LineChart mLineChart) {
        //数据填充
        List<Entry> entries = new ArrayList<>();
        for (int i = 0; i < data.length; i++) {
            String chartData = data[i];
            entries.add(new Entry(i, Float.parseFloat(chartData)));
        }
        //折线图基础配置 每一个mLineChartData可以看成一条独立的折线，可以设置多条不一样的折线在同一个表内展示
        LineData mLineChartData = mLineChart.getData();
        if (mLineChartData != null) {
            final LineDataSet set = new LineDataSet(entries, null);
            set.setLineWidth(1.5f);
            set.setCircleRadius(3.5f);
            set.setColor(Color.parseColor("#3F7FCD"));
            set.setDrawCircleHole(false);
            set.setHighlightLineWidth(1.5f);
            set.setValueTextSize(10f);
            //节点不显示具体数值
            set.setDrawValues(true);
            //设置是否显示圆点
            set.setDrawCircles(true);
            set.setDrawCircleHole(true);
            //圆点的颜色
            set.setCircleColor(Color.parseColor("#4081D6"));
            set.setCircleColorHole(Color.parseColor("#ffffff"));
            //填充折线图折线和坐标轴之间
            set.setDrawFilled(true);
            //填充可以设置渐变填充一个Drawable，或者仅仅填充颜色
            set.setFillDrawable(getResources().getDrawable(R.drawable.chat_bg_shape));
            mLineChartData.addDataSet(set);
            mLineChartData.notifyDataChanged();
            mLineChart.notifyDataSetChanged();

            set.setMode(LineDataSet.Mode.CUBIC_BEZIER);
            //这行代码必须放到这里，这里设置的是图表这个视窗能显示，x坐标轴，从最大值到最小值之间
            mLineChart.setVisibleXRangeMaximum(data.length);
            mLineChart.invalidate();
        }
        //影藏底部色块
        Legend legend = mLineChart.getLegend();
        legend.setEnabled(false);
        mLineChart.getAxisRight().setEnabled(false);
        //图表描述文字
        Description description = new Description();
        description.setText("血压");
        //右下角说明文字
        mLineChart.setDescription(null);
        mLineChart.setNoDataText("加载失败,请稍后再试~");
        //四周是不是有边框
        mLineChart.setDrawBorders(false);
        mLineChart.setBorderWidth(0.5f);
        //边框颜色，默认黑色？
        mLineChart.setBorderColor(Color.parseColor("#999999"));
        //允许触摸
        mLineChart.setTouchEnabled(true);
        // 启用/禁用拖动（平移）图表。
        mLineChart.setDragEnabled(false);
        //禁止x轴y轴同时进行缩放
        mLineChart.setPinchZoom(false);
        //启用/禁用缩放图表上的两个轴。
        mLineChart.setScaleEnabled(false);
        //设置为false以禁止通过在其上双击缩放图表。
        mLineChart.setDoubleTapToZoomEnabled(false);
    }
}
